The pre-boot phase of a computer system is generally considered to occupy the timeframe between when computer system initialization begins and an operating system begins to boot. Unlike during operating system runtime, there are limited resources available during the pre-boot phase. Similarly, there are no operating system facilities available after an OS as crashed. As a result, the support for interacting with the computer system during pre-boot, and post OS, such as setting policies, gathering information, and viewing configuration information is generally poor, if even available.
Currently, some pre-boot execution environments support Unicode-based console interfaces that provided terse access to the pre-boot environment and related operations. The console interfaces include the ConIn( ) and ConOut( ) functions. These two functions provide rudimentary access to the environment via unicode text input and output, respectively.
One example illustrating a common use of the foregoing text-based functions is the “Setup” application that is available during the early portion of the pre-boot. For example, just after a system restart or reset a user can activate a hot key, such as a function key (F2, F10), Esc, or a key combination to access a limited set of setup configuration parameters. For instance, via a text-based setup screen a user can select I/O port settings, configure a boot sequence, set up security measures, etc.
This conventional setup functionality is very limited. It is clumsy, error-prone, non-intuitive, and restrictive. It would be advantageous to provide a pre-boot interface mechanism that supports enhanced functionality while being more intuitive to improve the user experience and simplify system management.